index.html.vue 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. <template>
  2. <!-- 头部 -->
  3. <templateHead></templateHead>
  4. <!-- 菜单 -->
  5. <templateMenu></templateMenu>
  6. <!-- 内容 -->
  7. <div v-for="(item,index) in templateData" :key="index">
  8. <!--1.频道菜单-->
  9. <div v-if="item.sectorName=='channelMenu'">
  10. <templateChannelMenu :skinId="skinId" :routeId="routeId" :navigateData="navigateData.data" :templateData="item.componentList"></templateChannelMenu>
  11. </div>
  12. <!--2.广告组件-->
  13. <div v-if="item.sectorName=='adSector'">
  14. <templateAd :skinId="skinId" :adData="adData" :adTag="item.ad.ad_tag" ></templateAd>
  15. </div>
  16. <!--3.滚动图文组合-->
  17. <div v-if="item.sectorName=='scrollTextSector'">
  18. <templateScrollList :skinId="skinId" :templateData="item.componentList"></templateScrollList>
  19. </div>
  20. <!--4.图文组合1-->
  21. <div v-if="item.sectorName=='manyPictureSector'">
  22. <templateNewSector1 :skinId="skinId" :templateData="item.componentList"></templateNewSector1>
  23. </div>
  24. <!--5.图文组合2-->
  25. <div v-if="item.sectorName=='commentSector'">
  26. <templateNewSector2 :skinId="skinId" :templateData="item.componentList"></templateNewSector2>
  27. </div>
  28. <!--6.图文组合3-->
  29. <div v-if="item.sectorName=='listSector'">
  30. <templateNewSector3 :skinId="skinId" :templateData="item.componentList"></templateNewSector3>
  31. </div>
  32. </div>
  33. <!-- 底部 -->
  34. <templateFoot></templateFoot>
  35. </template>
  36. <script setup lang="ts">
  37. //0.加载全局模板组件 start---------------------------------------->
  38. //0.1全局通栏
  39. import templateHead from '@/components/template/sector/head/1200x200/1.vue'
  40. import templateMenu from '@/components/template/sector/menu/1200x130/1.vue'
  41. import templateFoot from '@/components/template/sector/foot/1200x580/1.vue'
  42. //0.2局部通栏
  43. //0.2.1广告组件
  44. import templateAd from '@/components/template/sector/body/ad/1200x90/1.vue'
  45. //0.2.2 频道菜单
  46. import templateChannelMenu from '@/components/template/sector/body/class/menu/1200x100/1.vue'
  47. //0.2.3 滚动图文组合
  48. import templateScrollList from '@/components/template/sector/body/class/banner/1200x410/1.vue'
  49. //0.2.3 图文组合1
  50. import templateNewSector1 from '@/components/template/sector/body/index/list/1200x470/1.vue'
  51. //0.2.4 图文组合2
  52. import templateNewSector2 from '@/components/template/sector/body/index/list/1200x470/2.vue'
  53. //0.2.5 图文组合3
  54. import templateNewSector3 from '@/components/template/sector/body/index/list/1200x980/1.vue'
  55. //0.加载全局模板组件 end---------------------------------------->
  56. //1.获得基本信息单元 start---------------------------------------->
  57. //1.1获得页面依赖
  58. import { ref, onMounted } from 'vue';
  59. import { ElMessage } from 'element-plus';
  60. //1.2使用url查询导航池id
  61. const targetSegment = getRoutePath(1);
  62. const routeId = ref<number>(0);
  63. const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
  64. method: 'GET',
  65. query: {
  66. 'pinyin': targetSegment,
  67. },
  68. });
  69. if (getRouteId.code == 200) {
  70. routeId.value = getRouteId.data.category_id
  71. }
  72. //1.4获得pinia源
  73. import { useTemplateBaseStore } from '@/stores/templateBase'
  74. const templateBaseStore:any = useTemplateBaseStore()
  75. //1.5获得该页的皮肤id - 在每个组件中也是同样的获得方法
  76. const skinId = ref<number>(0)
  77. const websiteId = ref<number>(0)
  78. //1.6获得站点基本信息
  79. const responseStatus = await requestDataPromise('/web/getWebsiteAllinfo', {
  80. method: 'GET',
  81. query: {
  82. 'link_textnum':24,
  83. 'link_imgnum':18,
  84. 'link_footnum':4
  85. },
  86. });
  87. if (responseStatus.code == 200) {
  88. //1.6.1设置站点基本信息
  89. templateBaseStore.setWebSiteInfo(responseStatus.data)
  90. websiteId.value = responseStatus.data.website_head.id;//获得网站id
  91. //1.6.2设置皮肤id
  92. skinId.value = templateBaseStore.webSiteInfo.website_foot.foot_info.template_id;
  93. }
  94. //1.7.seo
  95. const setData = await requestDataPromise('/web/getWebsiteCategoryHead', {
  96. method: 'GET',
  97. query: {
  98. 'catid': routeId.value
  99. },
  100. });
  101. let seoTitle = setData.data.seo_title;
  102. let seoDescription = setData.data.seo_description;
  103. let seoKeywords = setData.data.seo_keywords;
  104. let seoSuffix = setData.data.suffix;
  105. let seoName = setData.data.website_name;
  106. useHead({
  107. title: seoTitle + "_" + seoSuffix,
  108. meta: [
  109. { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
  110. { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 }
  111. ]
  112. });
  113. //1.获得基本信息单元 end---------------------------------------->
  114. //2.页面数据 start---------------------------------------->
  115. //2.1预创建请求数据
  116. const templateGetData:any = [
  117. {"parent":routeId.value+",0,0","child":"","imgnum":0,"textnum":0},
  118. {"parent":routeId.value+",0,0","child":"","imgnum":0,"textnum":0},
  119. {"parent":routeId.value+",0,0","child":"","imgnum":0,"textnum":0},
  120. {"parent":routeId.value+",0,0","child":"","imgnum":0,"textnum":0},
  121. {"parent":routeId.value+",0,0","child":"","imgnum":0,"textnum":0},
  122. {"parent":routeId.value+",0,0","child":"","imgnum":0,"textnum":0},
  123. {"parent":routeId.value+",0,0","child":"","imgnum":0,"textnum":0},
  124. {"parent":routeId.value+",0,0","child":"","imgnum":0,"textnum":0},
  125. {"parent":routeId.value+",0,0","child":"","imgnum":0,"textnum":0}
  126. ]
  127. //2.2获得模板数据
  128. const response:any = await requestDataPromise('/client/indexData', {
  129. method: 'POST',
  130. body: {
  131. 'website_id':websiteId.value,
  132. 'getpage':'class'
  133. },
  134. });
  135. const templateData = response.data.template.class;
  136. console.log(templateData)
  137. //2.2.1循环一下模板数据,把所有需要请求后端内容的组件里面imgSize和textSize拿出来
  138. const getIndex = ref<number>(0);
  139. for(let item of templateData){
  140. if(item.sectorName == 'scrollTextSector'||item.sectorName == 'manyPictureSector'||item.sectorName == 'commentSector'||item.sectorName == 'listSector'){
  141. for(let i of item.componentList){
  142. templateGetData[getIndex.value].imgnum = i.componentData.imgSize;
  143. templateGetData[getIndex.value].textnum = i.componentData.textSize;
  144. getIndex.value++;
  145. }
  146. }
  147. }
  148. //2.3 获得导航数据
  149. const navigateData = await requestDataPromise('/web/getWebsiteModelCategory', {
  150. method: 'GET',
  151. query: {
  152. 'placeid': 1,
  153. 'pid': routeId.value,
  154. 'num': 8
  155. },
  156. });
  157. const getNavIndex = ref<number>(0);
  158. for(let item of navigateData.data){
  159. templateGetData[getNavIndex.value].child = item.category_id;
  160. getNavIndex.value++;
  161. }
  162. //获得完整的请求数据
  163. const jsonString = JSON.stringify(getTransformArray(templateGetData));
  164. //2.4获得页面完整的请求数据
  165. const mkdata = await requestDataPromise('/web/getWebsiteAllArticle', {
  166. method: 'GET',
  167. query: {
  168. 'id': jsonString
  169. },
  170. });
  171. if (mkdata.code == 200) {
  172. //获得所有子频道的内容
  173. let childData = ref<any>([]);
  174. for(let item of mkdata.data){
  175. childData.value.push(item.child)
  176. }
  177. //把data中的childData拿出来
  178. //console.log(childData.value)
  179. let dataSort = ref<number>(0);
  180. for(let item of templateData){
  181. if(item.sectorName == 'scrollTextSector'){
  182. item.componentList[0].componentData.data = childData.value[dataSort.value]
  183. dataSort.value++;
  184. }
  185. if(item.sectorName == 'manyPictureSector'){
  186. item.componentList[0].componentData.data = childData.value[dataSort.value]
  187. dataSort.value++;
  188. item.componentList[1].componentData.data = childData.value[dataSort.value]
  189. dataSort.value++;
  190. }
  191. if(item.sectorName == 'commentSector'){
  192. item.componentList[0].componentData.data = childData.value[dataSort.value]
  193. dataSort.value++;
  194. item.componentList[1].componentData.data = childData.value[dataSort.value]
  195. dataSort.value++;
  196. }
  197. if(item.sectorName == 'listSector'){
  198. item.componentList[0].componentData.data = childData.value[dataSort.value]
  199. dataSort.value++;
  200. item.componentList[1].componentData.data = childData.value[dataSort.value]
  201. dataSort.value++;
  202. item.componentList[2].componentData.data = childData.value[dataSort.value]
  203. dataSort.value++;
  204. }
  205. }
  206. console.log(templateData)
  207. }
  208. //2.5广告数据
  209. const adData:any = ref([]);
  210. adData.value.push(response.data.ad.top)
  211. for(let item of response.data.ad.class){
  212. adData.value.push(item)
  213. }
  214. templateBaseStore.setAdList(adData.value)
  215. //2.页面数据 end---------------------------------------->
  216. </script>
  217. <style lang="less" scoped>
  218. @import '@/assets/css/class.less';
  219. </style>